from bpy.types import PropertyGroup
from bpy.props import IntProperty, FloatProperty, BoolProperty


class ActiveGroupWeightsAnimProps(PropertyGroup):
    
    """ active_emitter_item.weights.x """

    all_start: IntProperty(name="Start", description="Start at Frame", default=1)
    all_duration: IntProperty(name="Duration", description="Duration", default=10)
    all_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    all_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    all_from: FloatProperty(name="From", description="From value x", default=0.04)
    all_to: FloatProperty(name="To", description="To value x", default=0.0001)
    all_animed: BoolProperty(default=False)
    all_inc_dec: BoolProperty(default=False)

    force_start: IntProperty(name="Start", description="Start at Frame", default=1)
    force_duration: IntProperty(name="Duration", description="Duration", default=10)
    force_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    force_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    force_from: FloatProperty(name="From", description="From value x", default=0.04)
    force_to: FloatProperty(name="To", description="To value x", default=0.0001)
    force_animed: BoolProperty(default=False)
    force_inc_dec: BoolProperty(default=False)

    vortex_start: IntProperty(name="Start", description="Start at Frame", default=1)
    vortex_duration: IntProperty(name="Duration", description="Duration", default=10)
    vortex_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    vortex_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    vortex_from: FloatProperty(name="From", description="From value x", default=0.04)
    vortex_to: FloatProperty(name="To", description="To value x", default=0.0001)
    vortex_animed: BoolProperty(default=False)
    vortex_inc_dec: BoolProperty(default=False)
    
    magnetic_start: IntProperty(name="Start", description="Start at Frame", default=1)
    magnetic_duration: IntProperty(name="Duration", description="Duration", default=10)
    magnetic_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    magnetic_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    magnetic_from: FloatProperty(name="From", description="From value x", default=0.04)
    magnetic_to: FloatProperty(name="To", description="To value x", default=0.0001)
    magnetic_animed: BoolProperty(default=False)
    magnetic_inc_dec: BoolProperty(default=False)

    harmonic_start: IntProperty(name="Start", description="Start at Frame", default=1)
    harmonic_duration: IntProperty(name="Duration", description="Duration", default=10)
    harmonic_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    harmonic_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    harmonic_from: FloatProperty(name="From", description="From value x", default=0.04)
    harmonic_to: FloatProperty(name="To", description="To value x", default=0.0001)
    harmonic_animed: BoolProperty(default=False)
    harmonic_inc_dec: BoolProperty(default=False)

    charge_start: IntProperty(name="Start", description="Start at Frame", default=1)
    charge_duration: IntProperty(name="Duration", description="Duration", default=10)
    charge_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    charge_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    charge_from: FloatProperty(name="From", description="From value x", default=0.04)
    charge_to: FloatProperty(name="To", description="To value x", default=0.0001)
    charge_animed: BoolProperty(default=False)
    charge_inc_dec: BoolProperty(default=False)

    lennardjones_start: IntProperty(name="Start", description="Start at Frame", default=1)
    lennardjones_duration: IntProperty(name="Duration", description="Duration", default=10)
    lennardjones_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    lennardjones_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    lennardjones_from: FloatProperty(name="From", description="From value x", default=0.04)
    lennardjones_to: FloatProperty(name="To", description="To value x", default=0.0001)
    lennardjones_animed: BoolProperty(default=False)
    lennardjones_inc_dec: BoolProperty(default=False)

    wind_start: IntProperty(name="Start", description="Start at Frame", default=1)
    wind_duration: IntProperty(name="Duration", description="Duration", default=10)
    wind_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    wind_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    wind_from: FloatProperty(name="From", description="From value x", default=0.04)
    wind_to: FloatProperty(name="To", description="To value x", default=0.0001)
    wind_animed: BoolProperty(default=False)
    wind_inc_dec: BoolProperty(default=False)
    
    curve_guide_start: IntProperty(name="Start", description="Start at Frame", default=1)
    curve_guide_duration: IntProperty(name="Duration", description="Duration", default=10)
    curve_guide_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    curve_guide_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    curve_guide_from: FloatProperty(name="From", description="From value x", default=0.04)
    curve_guide_to: FloatProperty(name="To", description="To value x", default=0.0001)
    curve_guide_animed: BoolProperty(default=False)
    curve_guide_inc_dec: BoolProperty(default=False)
    
    texture_start: IntProperty(name="Start", description="Start at Frame", default=1)
    texture_duration: IntProperty(name="Duration", description="Duration", default=10)
    texture_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    texture_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    texture_from: FloatProperty(name="From", description="From value x", default=0.04)
    texture_to: FloatProperty(name="To", description="To value x", default=0.0001)
    texture_animed: BoolProperty(default=False)
    texture_inc_dec: BoolProperty(default=False)
    
    smokeflow_start: IntProperty(name="Start", description="Start at Frame", default=1)
    smokeflow_duration: IntProperty(name="Duration", description="Duration", default=10)
    smokeflow_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    smokeflow_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    smokeflow_from: FloatProperty(name="From", description="From value x", default=0.04)
    smokeflow_to: FloatProperty(name="To", description="To value x", default=0.0001)
    smokeflow_animed: BoolProperty(default=False)
    smokeflow_inc_dec: BoolProperty(default=False)

    turbulence_start: IntProperty(name="Start", description="Start at Frame", default=1)
    turbulence_duration: IntProperty(name="Duration", description="Duration", default=10)
    turbulence_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    turbulence_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    turbulence_from: FloatProperty(name="From", description="From value x", default=0.04)
    turbulence_to: FloatProperty(name="To", description="To value x", default=0.0001)
    turbulence_animed: BoolProperty(default=False)
    turbulence_inc_dec: BoolProperty(default=False)

    drag_start: IntProperty(name="Start", description="Start at Frame", default=1)
    drag_duration: IntProperty(name="Duration", description="Duration", default=10)
    drag_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    drag_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    drag_from: FloatProperty(name="From", description="From value x", default=0.04)
    drag_to: FloatProperty(name="To", description="To value x", default=0.0001)
    drag_animed: BoolProperty(default=False)
    drag_inc_dec: BoolProperty(default=False)

    boid_start: IntProperty(name="Start", description="Start at Frame", default=1)
    boid_duration: IntProperty(name="Duration", description="Duration", default=10)
    boid_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    boid_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    boid_from: FloatProperty(name="From", description="From value x", default=0.04)
    boid_to: FloatProperty(name="To", description="To value x", default=0.0001)
    boid_animed: BoolProperty(default=False)
    boid_inc_dec: BoolProperty(default=False)

    gravity_start: IntProperty(name="Start", description="Start at Frame", default=1)
    gravity_duration: IntProperty(name="Duration", description="Duration", default=10)
    gravity_increase: IntProperty(name="Increase", description="Frames of the increment", default=1)
    gravity_decrease: IntProperty(name="Decrease", description="Frames of the decrement", default=1)
    gravity_from: FloatProperty(name="From", description="From value x", default=0.04)
    gravity_to: FloatProperty(name="To", description="To value x", default=0.0001)
    gravity_animed: BoolProperty(default=False)
    gravity_inc_dec: BoolProperty(default=False)